﻿using System;

public class ClockEventArgs : EventArgs
{
    public DateTime Time { get; set; }
}

public class Clock
{
    // 嘀嗒事件
    public event EventHandler<ClockEventArgs> Tick;

    // 响铃事件
    public event EventHandler<ClockEventArgs> Alarm;

    // 响铃时间
    public DateTime AlarmTime { get; set; }

    // 开始闹钟
    public void Start()
    {
        while (true)
        {
            // 获取当前时间
            DateTime Time = DateTime.Now;

            // 触发嘀嗒事件
            OnTick(new ClockEventArgs { Time = Time });

            // 检查是否到达响铃时间
            if (Time >= AlarmTime)
            {
                // 触发响铃事件
                OnAlarm(new ClockEventArgs { Time = Time });
                break;
            }

            // 等待1秒
            System.Threading.Thread.Sleep(1000);
        }
    }

    // 触发嘀嗒事件的方法
    protected virtual void OnTick(ClockEventArgs e)
    {
        Tick?.Invoke(this, e);
    }

    // 触发响铃事件的方法
    protected virtual void OnAlarm(ClockEventArgs e)
    {
        Alarm?.Invoke(this, e);
    }
}

class clock
{
    static void Main(string[] args)
    {
        // 创建闹钟实例
        Clock alarmClock = new Clock();

        // 设置响铃时间,用户自行输入
        Console.WriteLine("请输入响铃时间：");
        string n = Console.ReadLine();
        int m = Convert.ToByte(n);
        alarmClock.AlarmTime = DateTime.Now.AddSeconds(m);

        // 订阅嘀嗒事件
        alarmClock.Tick += (sender, e) =>
        {
            Console.WriteLine($"嘀嗒: {e.Time.ToLongTimeString()}");
        };

        // 订阅响铃事件
        alarmClock.Alarm += (sender, e) =>
        {
            Console.WriteLine($"响铃: {e.Time.ToLongTimeString()} 时间到！");
        };

        // 启动闹钟
        alarmClock.Start();
    }
}